package com.byx.imclientutil.listener;

import com.byx.imclientutil.protobuf.ChatMessageProtobuf;

/**
 * OnApplicationLayerCallBack
 * 与应用层回调
 * @author Superb
 * @date 2021/4/4 20:11
 */
public interface OnApplicationLayerCallBack {
    /**
     * 分发消息到应用层
     *
     * @param msg
     */
    void dispatchMessage(ChatMessageProtobuf.Msg msg);

    /**
     * 从应用层获取网络是否可用
     *
     * @return
     */
    boolean isNetworkAvailable();

    /**
     * 获取由应用层构造的握手消息
     *
     * @return
     */
    ChatMessageProtobuf.Msg getHandshakeMsg();

    /**
     * 获取由应用层构造的心跳消息
     *
     * @return
     */
    ChatMessageProtobuf.Msg getHeartbeatMsg();

    /**
     * 获取应用层消息发送状态报告消息类型
     *
     * @return
     */
    int getServerSentReportMsgType();

    /**
     * 获取应用层消息接收状态报告消息类型
     *
     * @return
     */
    int getClientReceivedReportMsgType();
}
